Skip to content

Latest commit

 

History

History
130 lines (113 loc) · 3.04 KB

README.md

File metadata and controls

130 lines (113 loc) · 3.04 KB

1. Two Sum

Given an array of integers, return indices of the two numbers such that they add up to a specific target.

You may assume that each input would have exactly one solution, and you may not use the same element twice.

Example:

Given nums = [2, 7, 11, 15], target = 9, Because nums[0] + nums[1] = 2 + 7 = 9, return [0, 1]. 

Solutions (Python)

1. Brute Force

classSolution: deftwoSum(self, nums: List[int], target: int) ->List[int]: fork, vinenumerate(nums): iftarget-vinnums[k+1:]: return [k, k+1+nums[k+1:].index(target-v)]

2. One Pass Hash Table

classSolution: deftwoSum(self, nums: List[int], target: int) ->List[int]: s= {} fork, vinenumerate(nums): iftarget-vins.keys(): return [k, s[target-v]] s[v] =k

3. Two Pass Hash Table

classSolution: deftwoSum(self, nums: List[int], target: int) ->List[int]: s= {} fork, vinenumerate(nums): s[v] =kfork, vinenumerate(nums): iftarget-vins.keys() ands[target-v] !=k: return [k, s[target-v]]

Solutions (Rust)

1. Brute Force

implSolution{pubfntwo_sum(nums:Vec<i32>,target:i32) -> Vec<i32>{for i in0..nums.len(){for j in(i + 1)..nums.len(){if nums[i] + nums[j] == target {returnvec![i asi32, j asi32];}}}Vec::new()}}

2. One Pass Hash Table

use std::collections::HashMap;implSolution{pubfntwo_sum(nums:Vec<i32>,target:i32) -> Vec<i32>{letmut map = HashMap::new();for i in0..nums.len(){match map.get(&nums[i]){Some(&j) => returnvec![j asi32, i asi32],None => map.insert(target - nums[i], i),};}Vec::new()}}

3. Two Pass Hash Table

use std::collections::HashMap;implSolution{pubfntwo_sum(nums:Vec<i32>,target:i32) -> Vec<i32>{letmut map = HashMap::new();for i in0..nums.len(){ map.insert(target - nums[i], i);}for i in0..nums.len(){ifletSome(&j) = map.get(&nums[i]){if i != j {returnvec![i asi32, j asi32];}}}Vec::new()}}

Solutions (C)

1. Brute Force

int*twoSum(int*nums, intnumsSize, inttarget, int*returnSize){ staticinta[2]={0}; for(inti=0;i<numsSize-1;i++) { for(intj=i+1;j<numsSize;j++) { if(nums[i]+nums[j] ==target) { a[0]=i; a[1]=j; *returnSize=2; returna; } } } *returnSize=0; return0; }
close